package com.jt.datasource;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisDataSource {

    private static volatile JedisPool jedisPool=null;
//
//    static {
//        JedisPoolConfig poolConfig=new JedisPoolConfig();
//        poolConfig.setMaxTotal(128);//最大连接数
//        poolConfig.setMaxIdle(8);//最大空闲连接数
//        JedisPool jedisPool=
//                new JedisPool(poolConfig,"182.168.126.128",6379);
//    }
//
//    public static Jedis getConnection(){
//        return jedisPool.getResource();
//    }


    /**
     * volatile 关键字热点;
     * 1)修饰属性
     * 2)禁止指令重排序(JVM底层执行指令时,可能考虑到一定优化,会对指令进行重排序)
     * 3)保证线程可见性(一个线程修改了这个值,其他线程立刻可见.)
     * @return
     * */
    public static  Jedis getConnection() {
        if (jedisPool == null) {
            synchronized (JedisDataSource.class) {
                if (jedisPool == null) {
                    JedisPoolConfig poolConfig = new JedisPoolConfig();
                    poolConfig.setMaxTotal(128);//最大连接数
                    poolConfig.setMaxIdle(8);//最大空闲连接数
                    jedisPool =
                            new JedisPool(poolConfig, "192.168.126.129", 6379);
                    //1.
                    //1)
                    //2)
                    //3)
                    //4)
                    //5)
                }
            }
        }
            return jedisPool.getResource();
        }
    public static void close() {
        jedisPool.close();
    }
}
